"use strict";
// Class definition
var rectifyAnalyzeHandle = function () {

    toastr.options = {
        closeButton: true,
        positionClass: 'toast-top-center'
    };

    var eventHandler = function () {
        $('a.btn-hold').on('click', holdHandle);

        $('.not-safety-class-modal').on('show.bs.modal', initNotSafetyClass);
        $(document).on('click', '.checked-other', clickOtherItem);
        $(document).on('click', '.not-safety-class-modal .confirm', clickConfirm);
    };

    var initSelectpicker = function () {
        $('.k_selectpicker').selectpicker();
    };

    var holdHandle = function () {
        KDatacom.contabs({
            type: 'close'
        });
    };

    var initLinkageSelect = function (triggerEl, resultEl) {
        $(triggerEl).off('changed.bs.select');
        $(triggerEl).on('changed.bs.select', function () {
            var value = $(this).val();
            var optionHtml = '';
            switch (value) {
                case '1':
                    optionHtml += '<option value="0">无伤害或健康影响</option>';
                    optionHtml += '<option value="1">轻微伤害或健康影响</option>';
                    optionHtml += '<option value="2">较小伤害或健康影响</option>';
                    optionHtml += '<option value="3">重大伤害或健康影响</option>';
                    optionHtml += '<option value="4">PTD或3人及以下死亡</option>';
                    optionHtml += '<option value="5">多于3人死亡事故</option>';
                    break;
                case '2':
                    optionHtml += '<option value="0">无损坏</option>';
                    optionHtml += '<option value="1">轻微损坏</option>';
                    optionHtml += '<option value="2">较小损坏</option>';
                    optionHtml += '<option value="3">中等损坏</option>';
                    optionHtml += '<option value="4">重大损坏</option>';
                    optionHtml += '<option value="5">大规模损坏</option>';
                    break;
                case '3':
                    optionHtml += '<option value="0">无影响</option>';
                    optionHtml += '<option value="1">轻微影响</option>';
                    optionHtml += '<option value="2">较小影响</option>';
                    optionHtml += '<option value="3">中等影响</option>';
                    optionHtml += '<option value="4">重大影响</option>';
                    optionHtml += '<option value="5">大规模影响</option>';
                    break;
                case '4':
                    optionHtml += '<option value="0">无影响</option>';
                    optionHtml += '<option value="1">轻微影响</option>';
                    optionHtml += '<option value="2">有限影响</option>';
                    optionHtml += '<option value="3">重要影响</option>';
                    optionHtml += '<option value="4">全国范围影响</option>';
                    optionHtml += '<option value="5">国际影响</option>';
                    break;
                case 'A':
                case 'B':
                case 'C':
                case 'D':
                case 'E':
                    optionHtml += '<option value="0">一级</option>';
                    optionHtml += '<option value="1">二级</option>';
                    optionHtml += '<option value="2">三级</option>';
                    optionHtml += '<option value="3">四级</option>';
                    optionHtml += '<option value="4">五级</option>';
                    optionHtml += '<option value="5">六级</option>';
                    break;
            }
            $(resultEl).prop('disabled', false).find('.k_selectpicker').html(optionHtml);
            $(resultEl).selectpicker('refresh');
        });
    };

    /**
     * 设置不安全类别的form-group容器
     * @param label
     * @param description
     */
    var setNotSafetyClassFormGroup = function (label, description) {
        var formGroupHtml = '';
        description = description || '';
        label = label || '';

        formGroupHtml += '<div class="k-form__group form-group-marginless k-margin-b-20">';
        formGroupHtml += '<label>' + description + ':</label>';
        formGroupHtml += '<div class="row" id="' + label + '">';
        formGroupHtml += '</div>';
        formGroupHtml += '</div>';

        $('.not-safety-class-modal .k-form .k-scroll').append(formGroupHtml);
    };

    /**
     * 设置不安全类别的选项。
     * @param id
     * @param type
     * @param description
     */
    var setNotSafetyClassFormItem = function (id, type, description) {
        var formItemHtml = '';
        id = id || '';
        type = type || '';
        description = description || '';

        formItemHtml += '<div class="col-md-4 col-lg-3">';
        formItemHtml += '<div class="k-form__item">';
        formItemHtml += '<div class="k-checkbox-inline">';
        if (description.indexOf('其他') !== -1) {
            formItemHtml += '<label class="k-checkbox k-checkbox--bold k-checkbox--brand checked-other">';
            formItemHtml += '<input type="checkbox" value="' + id + '">' + description;
            formItemHtml += '<span></span>';
            formItemHtml += '</label>';
            formItemHtml += '<input type="text" class="form-control other" disabled name="other" placeholder="请输入...">';
        } else {
            formItemHtml += '<label class="k-checkbox k-checkbox--bold k-checkbox--brand">';
            formItemHtml += '<input type="checkbox" value="' + id + '">' + description;
            formItemHtml += '<span></span>';
            formItemHtml += '</label>';
        }
        formItemHtml += '</div>';
        formItemHtml += '</div>';
        formItemHtml += '</div>';

        $('#' + type).append(formItemHtml);
    };

    /**
     * 初始化不安全类别选择
     * @param e
     */
    var initNotSafetyClass = function (e) {
        $(this).data('relatedTarget', e.relatedTarget);
        $.ajax({
            type: 'GET',
            dataType: "json",
            timeout: 10000,
            url: 'json/not-safety-class.json',
            data: {}
        }).done(function (resultData, textStatus, jqXHR) {
            toastr.success('成功!');
            $('.not-safety-class-modal .k-form .k-scroll').empty();
            resultData.forEach(function (dataItem) {
                var $itemBox = '';

                // 判断当前dataItem是否是标题节点
                if (dataItem.isParent) {
                    // 若是标题节点，判断页面是否已创建该类别盒子
                    $itemBox = $('#' + dataItem.label);
                    if ($itemBox[0]) {
                        $itemBox.siblings('label').text(dataItem.description + ':');
                    } else {
                        setNotSafetyClassFormGroup(dataItem.label, dataItem.description);
                    }
                } else {
                    // 当该dataItem是内容节点时，判断页面上是否有其对应的容器 //
                    // 有容器时跳过下面if语句 //
                    $itemBox = $('#' + dataItem.type);
                    if (!$itemBox[0]) {
                        setNotSafetyClassFormGroup(dataItem.type);
                    }
                    setNotSafetyClassFormItem(dataItem.id, dataItem.type, dataItem.description);
                }
            });

            // 回显 //
            echoCheckedNotSafety(e.relatedTarget);
        }).fail(function (jqXHR, textStatus, errorThrown) {
            if (textStatus === 'timeout') {
                toastr.error('连接超时!')
            } else {
            }
            toastr.error('请求失败!');
            console.error(errorThrown);
        }).always(function () {

        });
    };

    /**
     * 不安全类别勾选其他选项后开发input输入框
     */
    var clickOtherItem = function () {
        var checked = $(this).find('input').prop('checked');
        $(this).siblings('input.other').prop('disabled', !checked)
    };

    /**
     * 点击不安全类别的确认事件
     */
    var clickConfirm = function () {
        var $modal = $(this).parents('.modal');
        var targetBtn = $modal.data('relatedTarget');
        var $checkBox = $modal.find('.k-checkbox');
        var checkedElVal = [];
        var checkedElName = [];
        $checkBox.each(function (i, checkItem) {
            var id = '';
            var description = '';
            if ($(checkItem).find('input:checked').prop('checked')) {
                if ($(checkItem).hasClass('checked-other')) {
                    id = $(checkItem).find('input:checked').val();
                    description = $(checkItem).text() + '/' + $(checkItem).siblings('.other').val();
                    checkedElName.push(description);
                } else {
                    id = $(checkItem).find('input:checked').val();
                    description = $(checkItem).text();
                    checkedElName.push(description);
                }
                checkedElVal.push({
                    id: id,
                    description: description
                });
            }
        });
        $(targetBtn).parent().siblings('input[name="notSafetyClass"]').val(encodeURI(JSON.stringify(checkedElVal)));
        $(targetBtn).parent().siblings('input[type="text"]').val(checkedElName).attr('title', checkedElName);

        $modal.modal('hide');
    };

    var echoCheckedNotSafety = function (targetBtn) {
        var checkedElVal = $(targetBtn).parent().siblings('input[name="notSafetyClass"]').val();
        if (checkedElVal.length !== 0) {
            checkedElVal = JSON.parse(decodeURI(checkedElVal));
            var modalClass = $(targetBtn).attr('data-target');
            checkedElVal.forEach(function (item, i) {
                var targetInput = $(modalClass).find('.k-checkbox input[value="' + item.id + '"]');
                targetInput.prop('checked', true);
                if (item.description.indexOf('其他') !== -1) {
                    var value = item.description.split('/');
                    targetInput.parent().siblings('input.other').val(value[value.length - 1]).prop('disabled', false);
                }
            })
        }
    };

    return {
        init: function () {
            eventHandler();
            initSelectpicker();
            initLinkageSelect('select.practical-consequences', '.practical-consequences-severity');
            initLinkageSelect('select.potential-consequences', '.potential-consequences-severity');
            initLinkageSelect('select.consequences', '.consequences-severity');
        }
    };
}();

// Class initialization on page load
jQuery(document).ready(function () {
    rectifyAnalyzeHandle.init();
});